6.7 选择单行、单列、单值、多行多列
分层索引切片,就是通过切片DataFrame或者Series的分层索引达到选择数据的目的。分层索引的切片方式与单层索引切片完全相同,只是单层索引标签一般是标量值,而分层索引标签是由元组构成。
1、 选择单行
单行选择直接将分层索引的每层标签写入元组,返回结果是Series数据
2、 选择单列
单列选择将分层索引的每层标签写入元组,返回结果也是Series数据
3、选择单值
指定单行单列的交叉点是一个单值,也就是在loc中指定单行分层索引标与单列分层索引标签
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.多层索引区域选择.xlsx" , header =[ 0,1,2 ], index_col =[ 0,1,2 ])
print (df)
返回:
大类 | 硬件 | 软件 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
中类 | 整机 | 配件 | 办公 | 编程 | |||||||
小类 | PC | 笔记本 | CPU | 主板 | 显卡 | Excel | Word | Python | |||
地区 | 部门 | 代号 | |||||||||
上海 | 销售1部 | A | 2 | 7 | 3 | 2 | 9 | 66 | 9 | 55 | |
B | 12 | 5 | 45 | 15 | 12 | 24 | 13 | 41 | |||
销售2部 | C | 5 | 24 | 12 | 64 | 65 | 43 | 45 | 9 | ||
成都 | 销售1部 | A | 24 | 96 | 11 | 99 | 78 | 56 | 18 | 12 | |
销售2部 | B | 68 | 12 | 58 | 11 | 44 | 59 | 24 | 49 | ||
上海 | 销售1部 | A | 99 | 55 | 22 | 18 | 31 | 66 | 56 | 78 | |
B | 23 | 34 | 13 | 42 | 45 | 99 | 67 | 60 | |||
销售2部 | C | 85 | 56 | 35 | 66 | 21 | 86 | 81 | 63 | ||
D | 99 | 81 | 45 | 12 | 45 | 75 | 91 | 45 |
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.多层索引区域选择.xlsx" , header =[ 0,1,2 ], index_col =[ 0,1,2 ])
s1=df.loc[( "上海","销售1部","B" )]
s2=df.loc[:,( "硬件","配件","主板" )]
print (s1)
print ("--------------------------------")
print (s2)
返回:
大类 | 中类 | 小类 | |
---|---|---|---|
硬件 | 整机 | PC | 12 |
笔记本 | 5 | ||
配件 | CPU | 45 | |
主板 | 15 | ||
显卡 | 12 | ||
办公 | Excel | 24 | |
Word | 13 | ||
编程 | Python | 41 |
Name: (上海, 销售1部, B), dtype: int64
--------------------------------
地区 | 部门 | 代号 | |
---|---|---|---|
上海 | 销售1部 | A | 2 |
B | 15 | ||
销售2部 | C | 64 | |
成都 | 销售1部 | A | 99 |
销售2部 | B | 11 | |
北京 | 销售1部 | A | 18 |
B | 42 | ||
销售2部 | C | 66 | |
D | 12 |
Name: (硬件, 配件, 主板), dtype: int64
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.多层索引区域选择.xlsx" , header =[ 0,1,2 ], index_col =[ 0,1,2 ])
df.sort_index(level=[ "地区","部门","代号" ], inplace = True )
df=df.loc[( "上海","销售1部","A" ):( "北京","销售1部","B" ),( "硬件","配件","主板" ):( "软件","编程","Python" )]
print (df)
大类 | 硬件 | 软件 | ||||||
---|---|---|---|---|---|---|---|---|
中类 | 配件 | 办公 | 编程 | |||||
小类 | 主板 | 显卡 | Excel | Word | Python | |||
地区 | 部门 | 代号 | ||||||
上海 | 销售1部 | A | 2 | 9 | 66 | 9 | 55 | |
B | 15 | 12 | 24 | 13 | 41 | |||
销售2部 | C | 64 | 65 | 43 | 45 | 9 | ||
北京 | 销售1部 | A | 18 | 31 | 66 | 56 | 78 | |
B | 42 | 45 | 99 | 67 | 60 |